/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gui;

import dominio.Aluno;
import java.util.List;
import javax.swing.JOptionPane;
import negocio.AlunoNegocio;
import negocio.Negocio;

/**
 *
 * @author nathalie.ramos
 */
public class ControladorAluno implements Controlador{
    private Negocio an;

    private JanelaCadastro janelaCadastro;

    private JanelaLista janelaLista;

    private Aluno aluno;
    
    private Controlador controladorPricipal;

    public ControladorAluno(){
        an = new AlunoNegocio();
        aluno = new Aluno();
    }
    
    public ControladorAluno(Controlador con){
        an = new AlunoNegocio();
        aluno = new Aluno();
        this.controladorPricipal = con;
    }

    /**
     * Método que insere um objeto Aluno na camada de negócio e exibe a
     * mensagem de resultado
     */
    public void inserir(){
        if(an.inserir(aluno)){
            aluno = new Aluno();
            janelaCadastro.preparaTela();
        }

        JOptionPane.showMessageDialog(null, an.getMensagem());
    }

    public void alterar(){
        if(an.alterar(aluno)){
            janelaCadastro.preparaTela();
        }
        JOptionPane.showMessageDialog(null, an.getMensagem());
    }


    public void listar(){
        List lista = an.listar();
        janelaLista = new JanelaListaAluno(this, lista);
        janelaLista.setVisivel(true);
    }

    public void pesquisar(){
        List lista = an.pesquisar(aluno);
        if(lista == null){
            JOptionPane.showMessageDialog(null, an.getMensagem());
        }else{
            janelaLista = new JanelaListaAluno(this, lista);
            janelaLista.setVisivel(true);
            janelaCadastro.setVisivel(false);
            janelaLista = null;
        }
    }

    public void cadastrarComposicao(){
        janelaCadastro.setVisivel(false);
        Controlador con = new ControladorObservacao(this , aluno);
        JanelaCadastro jan = new JanelaCadastroObservacao();
        con.setJanelaCadastro(jan);
        jan.setControlador(con);
        jan.setVisivel(true);
    }

    @Override
    public void preparaJanelaCadastro(){
        janelaCadastro.preparaTela();
        janelaCadastro.setVisivel(true);
    }

    /**
     * @param janelaCadastro the janelaCadastro to set
     */
    @Override
    public void setJanelaCadastro(JanelaCadastro janelaCadastro) {
        this.janelaCadastro = janelaCadastro;
    }

    /**
     * @return the funcionario
     */
    public Object getObject() {
        return aluno;
    }

    /**
     * @param funcionario the funcionario to set
     */
    public void setObject(Object objeto) {
        this.aluno = (Aluno)objeto;
    }

    public void excluir() {
    }

    public void encerrar() {
        controladorPricipal.preparaJanelaCadastro();
    }
}